package com.power.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.power.domain.Order;
import com.baomidou.mybatisplus.extension.service.IService;
import com.power.model.OrderConfirmParam;
import com.power.vo.OrderStatusCount;
import com.power.vo.OrderVo;

import java.util.Date;

/**
* @author dingchunlin
* @description 针对表【order(订单表)】的数据库操作Service
* @createDate 2024-07-10 15:12:13
*/
public interface OrderService extends IService<Order> {

    /**
     * 分页查询订单列表
     * @param page 分页对象
     * @param orderNumber 订单号
     * @param status 订单状态
     * @param startTime 开始时间
     * @param endTime 结束时间
     * @return 订单分页对象
     */
    Page<Order> queryOrderPage(Page<Order> page, String orderNumber, Integer status, Date startTime, Date endTime);

    /**
     * 根据订单号查询订单详情
     * @param orderNumber 订单号
     * @return 订单详情
     */
    Order queryOrderDetailByOrderNumber(String orderNumber);

    /**
     * 查询会员订单状态统计
     * @return 会员订单状态统计
     */
    OrderStatusCount queryMemberOrderStatusCount();


    /**
     * 分页查询会员订单列表
     * @param current 当前页
     * @param size 每页显示数量
     * @param status 订单状态
     * @return 会员订单分页对象
     */
    Page<Order> queryMemberOrderPage(Long current, Long size, Integer status);

    /**
     * 根据订单号查询会员订单详情
     * @param orderNumber 订单号
     * @return 会员订单详情
     */
    Order queryMemberOrderDetailByOrderNumber(String orderNumber);

    /**
     * 确认收货
     * @param orderNumber 订单号
     * @return 是否成功
     */
    Boolean receiptMemberOrder(String orderNumber);

    /**
     * 删除会员订单
     * @param orderNumber 订单号
     * @return 是否成功
     */
    Boolean removeMemberOrder(String orderNumber);

    /**
     * 确认订单
     * @param orderConfirmParam 订单确认参数
     * @return 订单确认结果
     */
    OrderVo queryMemberOrderConfirmVo(OrderConfirmParam orderConfirmParam);

}
